iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
Mobile Development

Android的30天學習歷程系列 第 12

#第12篇:Retrofit 使用(下)

  • 分享至 

  • xImage
  •  

上篇有提到會有需要傳資料給 API 的情況,本篇將會用登入的方式講述當今天要傳資料給 API 時該如何使用

一開始的步驟與上篇一樣:
(這邊是假設以將插建安裝完成)

  1. 創建一個class並將需接收的資料生成好
    https://ithelp.ithome.com.tw/upload/images/20200924/20129418XZTVEHTnLz.png
  2. 在主程式使用 retrofit 語法去 API 搜尋資料
 @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            Retrofit retrofit = new Retrofit.Builder()
                    .addConverterFactory(GsonConverterFactory.create()) // 使用 Gson 解析
                    .baseUrl("...")//...為api的網址
                    .build();

3.到 API 拿資料時獲取他回傳的資料,並連結到創建資料格式的class

public interface ApiService {
    //這裡常用的有 GET 與 POST,這就需要看API的設置來選擇使用。
    //GET:會將你傳的資料顯示到網址上
    //POST:不會將你傳的資料顯示到網址上
    @POST("auth/login")//路徑
    Call<LoginTokenModel> 
    getLoginToken(@Field("account") String account, @Field("password") String password);
    //getLoginToken 後面放的即是你要傳的變數的名稱與空間 **注意名子一定要與API的相同**
}

再把主程式跟上面創建的 interface 連結到一起並放入你要傳的資料就可以了

public class MainActivity extends AppCompatActivity {
    private ApiService apiService;
    String account="account";
    String pssword="password";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Retrofit retrofit = new Retrofit.Builder()
                    .addConverterFactory(GsonConverterFactory.create()) // 使用 Gson 解析
                    .baseUrl("...")//...為api的網址
                    .build();
            apiService= retrofit.create(ApiService.class);
            apiService.getLoginToken(account,password).enqueue(new Callback<LoginTokenModel>() {
                //getLoginToken 裡面放以要傳的資料
                @Override
                public void onResponse(Call<LoginTokenModel> call, Response<LoginTokenModel> response) {
                //拿 API 回傳的值
                }

                @Override
                public void onFailure(Call<List<Modle>> call, Throwable t) {
                    Log.d("TAG", ""+t);
                }
            });
        }

    }

上一篇
#第11篇:Retrofit2 使用(上)
下一篇
#第13篇:RxJava 使用
系列文
Android的30天學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言